package com.hunttown.mes.service;

import com.hunttown.common.domain.Query;
import com.hunttown.mes.dao.AnalysisManageRightRoleMenuRelDao;
import com.hunttown.mes.domain.AnalysisManageRightRoleMenuRel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

/**
 * created by wangjunfu on 2018-11-26 15:06:01
 */
@Service
public class AnalysisManageRightRoleMenuRelService {

    private final static Logger logger = LoggerFactory.getLogger(AnalysisManageRightRoleMenuRelService.class);

    private final AnalysisManageRightRoleMenuRelDao analysisManageRightRoleMenuRelDao;

    @Autowired
    public AnalysisManageRightRoleMenuRelService(AnalysisManageRightRoleMenuRelDao analysisManageRightRoleMenuRelDao) {
        this.analysisManageRightRoleMenuRelDao = analysisManageRightRoleMenuRelDao;
    }

    /**
     * 新增
     *
     * @param analysisManageRightRoleMenuRel 实体对象
     * @return 最新插入id
     */
    public AnalysisManageRightRoleMenuRel insert(AnalysisManageRightRoleMenuRel analysisManageRightRoleMenuRel) {
        if (analysisManageRightRoleMenuRel.getDeleteFlag() == null)
            analysisManageRightRoleMenuRel.setDeleteFlag(0);

        return analysisManageRightRoleMenuRelDao.insert(analysisManageRightRoleMenuRel);
    }

    /**
     * 根据ID修改数据信息
     *
     * @param analysisManageRightRoleMenuRel 实体对象
     * @return True or False
     */
    public Boolean updateInfoById(AnalysisManageRightRoleMenuRel analysisManageRightRoleMenuRel) {
        return analysisManageRightRoleMenuRelDao.updateInfoById(analysisManageRightRoleMenuRel);
    }

    /**
     * 根据Query修改数据信息
     *
     * @param query 需要修改的字段 KV 格式
     * @return True or False
     */
    public Boolean updateInfoByQuery(Query query) {
        return analysisManageRightRoleMenuRelDao.updateInfoByQuery(query);
    }

    /**
     * 根据ID获取记录信息
     *
     * @param id 主键id
     * @return 实体对象
     */
    public AnalysisManageRightRoleMenuRel selectById(Integer id) {
        return analysisManageRightRoleMenuRelDao.selectById(id);
    }

    /**
     * 根据query取出一条记录，但是可能有多条记录，取最新的一条。
     *
     * @param query 查询条件 KV 格式
     * @return 实体对象
     */
    public AnalysisManageRightRoleMenuRel selectObjByQuery(Query query) {
        if (query == null || query.size() == 0) {
            return null;
        }

        List<AnalysisManageRightRoleMenuRel> list = selectByQuery(query);
        if (list == null || list.size() == 0) {
            return null;
        }

        return list.get(0);
    }

    /**
     * 根据条件获取List
     *
     * @param query 查询条件 KV 格式
     * @return 实体对象列表
     */
    public List<AnalysisManageRightRoleMenuRel> selectByQuery(Query query) {
        if (!query.containsKey("deleteFlag")) {
            query.put("deleteFlag", 0);
        }

        return analysisManageRightRoleMenuRelDao.selectByQuery(query);
    }

    /**
     * 根据条件获取记录总数
     *
     * @param query 查询条件 KV 格式
     * @return 总记录数
     */
    public Long countByQuery(Query query) {
        if (!query.containsKey("deleteFlag")) {
            query.put("deleteFlag", 0);
        }

        return analysisManageRightRoleMenuRelDao.countByQuery(query);
    }

    /**
     * 根据ID删除记录信息
     *
     * @param id 主键id
     * @return True or False
     */
    public Boolean deleteById(Integer id) {
        return analysisManageRightRoleMenuRelDao.deleteById(id);
    }

    /**
     * 通过role_id批量物理删除
     *
     * @param roleId 角色ID
     * @return True or False
     */
    public Boolean deletePhysicalByRoleId(Integer roleId) {
        return analysisManageRightRoleMenuRelDao.deletePhysicalByRoleId(roleId);
    }

    /**
     * 批量插入
     *
     * @param list
     */
    public void insertForBatch(List<AnalysisManageRightRoleMenuRel> list) {
        analysisManageRightRoleMenuRelDao.insertForBatch(list);
    }
}